package br.edu.fanor.managedbeans.util;

import javax.faces.model.DataModel;


public abstract class Paginacao {

    private int tamanhoPagina;
    private int pagina;

    public Paginacao(int tamanhoPagina) {
        this.tamanhoPagina = tamanhoPagina;
    }

    public abstract int getContagemItens();

    public abstract DataModel criarPaginaModeloDados();

    public int getPaginaPrimeiroItem() {
        return pagina * tamanhoPagina;
    }

    public int getPaginaUltimoItem() {
        int i = getPaginaPrimeiroItem() + tamanhoPagina - 1;
        int count = getContagemItens() - 1;
        if (i > count) {
            i = count;
        }
        if (i < 0) {
            i = 0;
        }
        return i;
    }

    public boolean temProximaPagina() {
        return (pagina + 1) * tamanhoPagina + 1 <= getContagemItens();
    }

    public void proximaPagina() {
        if (temProximaPagina()) {
            pagina++;
        }
    }

    public boolean istemPaginaAnterior() {
        return pagina > 0;
    }

    public void paginaAnterior() {
        if (istemPaginaAnterior()) {
            pagina--;
        }
    }

    public int getTamanhoPagina() {
        return tamanhoPagina;
    }

}